/**
 * 
 */
package com.wegax.finprod.application;

import com.wegax.finprod.sender.ApplicationFormSender;

/**
 * @author wegax
 * 
 */
public interface Application {

	/**
	 * Returns application form type. The information is required by {@link ApplicationFormSender} for putting
	 * application form into approperiate queue (based on the name of the {@link ApplicationFormType}).
	 * 
	 * @return Application form type.
	 */
	ApplicationFormType getApplicationFormType();

	/**
	 * Identifier of the customer or applicant. The value is required to create unique identifier of the application.
	 * The value will be hashed along other specifc information.
	 * 
	 * @return Identifier of the customer or applicant
	 */
	String getCustomerIdentifier();

	/**
	 * Fills the applcation form with generated application form identifier.
	 */
	void withApplicationFormIdentifier(String applicationFormIdentifier);

}
